package com.idlecode.util;

import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.text.NamingCase;

/**
 * 代码生成器 工具类
 */
public class GenUtil {

	/**
	 * 获取模块名
	 *
	 * @param tableName 包名
	 * @return 模块名
	 */
	public static String getModuleName(String tableName) {
		String[] tableSplit = tableName.split("_");
		if (tableSplit.length == 1) {
			return tableName;
		}
		String packagePath = "";
		for (int i = 1, size = tableSplit.length; i < size; i++) {
			if (i >= 3) {
				break;
			}
			String tablePath = tableSplit[i];
			packagePath = packagePath + tablePath + ".";
		}
		return packagePath.substring(0, packagePath.length() - 1).toLowerCase();
	}

	/**
	 * 获取功能名，默认使用表名作为功能名
	 *
	 * @param tableName 表名
	 * @return 功能名
	 */
	public static String getFunctionName(String tableName) {
		return tableName;
	}

	/**
	 * 表名转驼峰并移除前后缀
	 *
	 * @param upperFirst   首字母大写
	 * @param tableName    表名
	 * @param removePrefix 删除前缀
	 * @param removeSuffix 删除后缀
	 * @return java.lang.String
	 */
	public static String camelCase(boolean upperFirst, String tableName, String removePrefix, String removeSuffix) {
		String className = tableName;
		// 移除前缀
		if (CharSequenceUtil.isNotBlank(removePrefix)) {
			className = CharSequenceUtil.removePrefix(tableName, removePrefix);
		}
		// 移除后缀
		if (CharSequenceUtil.isNotBlank(removeSuffix)) {
			className = CharSequenceUtil.removeSuffix(className, removeSuffix);
		}
		// 是否首字母大写
		if (upperFirst) {
			return NamingCase.toPascalCase(className);
		} else {
			return NamingCase.toCamelCase(className);
		}
	}
}
